﻿
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:

\graphicspath{{figures/ch01/}}
\chapter{绪论}
\label{cha:intro}

\section{课题背景和意义}
\label{sec:background and importance}

真实感物体的建模与绘制一直是计算机图形学研究的重点，也是构建虚拟现实系统的核心问题和关键技术之一~\cite{Zhao09}。对参与介质及其光学现象的逼真再现，如烟、雾、大气、火焰等，可以充分的增强虚拟环境中某些场景的真实感。所谓参与介质，是指介质会对在其中传输的光线产生影响，包括对光能的吸收和散射，以及介质本身的发光，如火焰。因此光线在参与介质中传播，经历了丰富而复杂的光照变化，其逼真程度能够直接影响虚拟现实系统的沉浸感。

\begin{figure}[!htb]
  \centering
  \subfloat[城市雾气下的街灯]{
    \label{fig:metro-fog-light}
    \includegraphics[width=0.45\textwidth]{fog-metropolis-light}}
  \hfil
  \subfloat[大气中的云]{
    \label{fig:sun-behind-cloud}
    \includegraphics[width=0.45\textwidth]{sun-behind-cloud.eps}}
  \hfil
  \subfloat[透过雾的场景]{
    \label{fig:17-hole-bridge}
    \includegraphics[width=0.45\textwidth]{sog-17kongbridge.eps}}
  \hfil
  \subfloat[风中自然运动的烟]{
    \label{fig:chimney-smoke}
    \includegraphics[width=0.45\textwidth]{chimney-smoke.eps}}
  \caption{真实场景中的参与介质}
  \label{fig:sky-cloud}
\end{figure}

通过建模技术恢复真实的参与介质及其光照现象具有重要的意义。在虚拟环境中重现高度真实的带有参与介质的场景的光照现象，可以给人以强烈的真实感和沉浸感。目前，以固态物体的几何信息和材质信息为建模对象的建模技术已经取得了很多研究成果~\cite{Sarfraz2004}~\cite{Ihrke10}，而对于具有动态流体特性的参与介质建模工作相比前者则较少，还有许多个问题值得探索而且尚待解决。因为参与介质往往表现为形状极不规则，没有严格的表面，我们用经典的欧几里德几何无法完整的对其描述。此外，参与介质的形状会随时间而发生极其复杂的变化。通常来说，我们将这类形状和运动不规则而且难以描述的物体称为不定形物。这类不定形物以及其运动是常见的自然现象，为人们所熟知。因此，研究真实世界中动态参与介质的视觉获取和建模的理论方法与关键技术，对促进真实感属性建模在数字化技术领域的应用具有重要的科学意义和应用价值。

动态非均与参与介质的建模与绘制是近年来计算机图形学领域的热点和难点。对于非均匀的参与介质，如运动的烟，其建模方式主要是采用基于物理模拟的方法。根据初始状态和物理方程，用数值计算的方法得出每一时间节点上烟的密度场数据。基于物理的方法存在的缺点也是非常明显的。一方面数值方法计算量较大，每一帧对速度场的更新都需要解偏微分方程，而且这类方程对于参数很敏感，不易控制；另一方面，对于运动的烟的复杂细节特征，模拟的方法无法详细的表现出来。因此，换一种途径去解决动态参与介质的建模问题成为必然。

近年来，基于图像来对真实物体进行建模和重建的方法成为了计算机图形学及计算机视觉领域的活跃的研究热点。基于图像的建模具有较高的真实感，尤其对于复杂的自然现象，如树木和花朵的几何形状、人的头发和皮肤的反射属性、人以及衣物的运动等。这些现象或物体由于其复杂性，往往很难高效而真实的通过解析式、数学模型等传统的建模方式来描述。基于图像的方法对这些方面的处理具有先天的优势，直接去采集和捕捉真实的介质，可以完整的保留真实现象或真实物体中丰富的复杂细节，而且计算强度也小于或相当于基于物理的数值模拟的方法。因此，基于图像或视频去恢复参与介质的形状和运动，是一个非常值得探索和有前景的方向。

\section{研究现状}

\subsection{基于物理的动态参与介质建模}

真实物体的外观与其运动、相互作用等往往符合一定的自然规律，将这些自然规律抽象成物理定律，并使用这些物理定律来作为指导，在虚拟环境中重现某一类真实物体和现象，这就是基于物理建模的基本思想。近年来，随着计算机硬件计算能力的不断提高，特别是可编程图形硬件的迅速发展，基于物理的动态参与介质建模方法得到了充分的发展。针对参与介质这类不定形物的物理建模，一般采用流体模拟技术。流体模拟是从流体力学选取适当的物理方程，根据视觉模拟的需要，进行必要的简化，通过数值模拟求解得到各个时刻的流体的形状和动态。

纳维-斯托克斯方程（Navier-Stokes Equation,简称NSE）是较为完整的描述流体运动现象的物理方程~\cite{Tan2009}。该方程是由牛顿第二定律推导出来的，如公式\ref{eq:Navier-Stokes}所示：
\begin{equation}
\label{eq:Navier-Stokes}
\rho \left(\frac{\partial \mathbf{v}}{\partial t} + \mathbf{v} \cdot \nabla \mathbf{v}\right) = -\nabla p + \mu \nabla^2 \mathbf{v} + \mathbf{f}.
\end{equation}

其中$\mathbf{\rho}$是流体的密度，$\mathbf{v}$是流体的速度，p是压力，$\mu$是流体的动力学粘性系数，$\mathbf{f}$是施加在流体上的外力，如重力、烟的热浮力等。

在流体模拟或建模中，对这一方程的求解，主要有两种方法，或者说两种解决问题的观点。一种是基于粒子的拉格朗日方法，以场中每一流体微粒或微团（如烟的颗粒，水滴等）为物理量的载体，通过不断更新求解每一微团对应的物理量（如速度、密度、压强和温度等），来生成整个流体的运动。Reeves提出的粒子系统~\cite{Reeves1983}就是基于这一思想，而近年来~\cite{Monaghan92}提出的光滑粒子流体动力学（Smoothed Particle Hydrodynamics，或SPH）成为一种流行的解决流体模拟问题的技术。另一种是基于网格的欧拉方法，以流体场中固定位置处的网格点作为物理量的载体，通过分析计算每一网格点上某一时刻的物理量，和从一个位置变化到另一位置时这些物理量的变化，来得到流体运动的整个过程。Foster和Metaxas的工作~\cite{Foster1996}是第一个完整的解决三维网格空间中纳维-斯托克斯方程来进行流体模拟的例子。Stam改进了这一工作，提出了一种伪拉格朗日方法~\cite{Stam1999}来获得方程求解的数值稳定性。

在以上两种解决纳维-斯托克斯方程的方法之外，Li等~\cite{Li2003}将微观物理学中的离散格子玻尔兹曼方法（Lattice Boltzmann Method，或LBM）引入到计算机图形学算法的研究中。这一方法基于微观的运动方程——离散格子玻尔兹曼方程，其核心思想是通过构建包含微观物理过程的简单动力学模型来使得宏观物理量平均地满足相应的物理方程——纳维-斯托克斯方程这样一个过程。即采用一种简单的方式来逼近纳维-斯托克斯方程的解。由于其考虑微观属性和局部的运动，因此这一方法比前述的物理方法有若干优点：可以处理复杂的边界、引入微观的交互以及易于并行化。

因为本文研究的是通过采集建模对象的数据来建模的方法，这里只简单的介绍基于物理的建模方式。感兴趣的读者可以参考相关文献~\cite{Tan2009}。

\subsection{基于采集真实数据的参与介质建模}

本文的研究工作侧重的是一种非物理模拟的方法，通过搭建设备来采集动态参与介质的数据并利用采集到的数据进行建模。对真实的参与介质建模的方法一般采用专门设计和搭建的设备来采集静态的图片或动态的一组视频序列，并且往往将建模的模型进行简化，以降低问题的复杂性。基于图像来进行烟等参与介质的建模工作是一个较前沿的研究内容，最近十年才有研究人员进行这方面的研究。这一小节列举了近年来国内外科研人员通过搭建采集设备进行数据采集，并利用采集到的数据来建立参与介质模型的相关研究工作，逐一介绍了他们采用的采集设备和建模方法。

Hasinoff研究了从同步采集得到的图像或视频序列数据来重构三维的火焰模型的问题~\cite{Hasinoff2002} ~\cite{Hasinoff2007}。通过使用一种基于物理的成像模型，将火焰体数据的重构问题转化为一个以极少的视点来完成的分层摄影（tomography）的过程，每一“层”上的密度分布则由多个二维高斯函数的线性组合来描述。Hasinoff的建模方法使用多相机同步拍摄火焰，根据简化的火焰成像模型来求解每一“层”上高斯函数对每一体数据单元的权重，从而重构火焰的体数据。另外，Hasinoff还提出了一种基于图像的方法来绘制重构的火焰数据。
 
 \begin{figure}[b]
  \centering
  \subfloat[高速相机设备]{
    \label{fig:hawkins-camera}
    \includegraphics[width=0.45\textwidth]{hawkins-camera}}
  \hfil
  \subfloat[激光反射镜机械同步设备]{
    \label{fig:galvanar}
    \includegraphics[width=0.45\textwidth]{galvanar}}
	  \hfil
  \subfloat[反射率测量设备]{
    \label{fig:smoke-box-ss}
    \includegraphics[width=0.45\textwidth]{smoke-box-ss}}
	  \hfil
  \subfloat[相位函数测量设备]{
    \label{fig:phase-capture}
    \includegraphics[width=0.3\textwidth]{phase-capture}}
  \caption{Hawkins等所采用的参与介质数据采集设备}
  \label{fig:hawkins-device}
\end{figure}

Hawkins等~\cite{Hawkins05}提出了一种采用激光设备来采集随时间变化的参与介质体数据的技术。其使用激光发射器和棱镜等辅助校正设备发射一个激光平面，快速的对整个采集区域进行扫描，同时使用高速相机对每一次激光平面的移动间隙进行同步拍照。这一工作所搭建的设备如图\ref{fig:hawkins-device}将介质在激光平面的照亮下的散射考虑作单散射，采集图像的像素值与当时激光扫描平面的介质密度是线性的关系。可以逐层的恢复烟的密度场。由于激光平面的扫描速度非常快，将整个介质扫描一遍得到每一层的数据所需要的时间非常短，可以忽略这部分时间间隔，那么这样的一次扫描就得到了这一帧完整的体数据。此外，作者还提出了相位函数和散射率的测量设备和测量方法。使用一个玻璃箱容纳烟，并用一束激光照射，通过拍摄高动态范围图像来反求烟的RGB三通道的反射率（albedo），如图\ref{fig:smoke-box-ss}。使用一个球形腔来获取光源在所有方向上的散射强度，即相位函数，设备如图\ref{fig:phase-capture}所示。这一方法所使用的设备非常难于搭建，需要做大量工作进行同步和校正。另外，激光平面的扫描间隔即是采集的参与介质体数据的分辨率，采集高分辨率的体数据需要极高的采集速度。

Narasimhan等~\cite{Narasimhan06}使用相机对装在长方形玻璃盒子中的均匀悬浊液或乳浊液拍照，并且在介质内放入一个漫反射点光源，如图\ref{fig:by-dilution-ss}所示。相机拍摄得到的高动态范围图像，根据传输方程~\cite{Glassner1994}求解介质的吸收系数和散射系数。在这一研究工作中，因为已经将介质密度均匀作为前提，因此输运方程被大大简化，可以通过数值方法快速计算来恢复参与介质的吸收和散射系数。这一方法没有解决参与介质形状的建模问题，因而也无法应用到动态参与介质的建模工作中。

\begin{figure}[]
  \centering
  \includegraphics[width=0.618\textwidth]{by-dilution-ss}
  \caption{Narasimhan等搭建的采集设备}
  \label{fig:by-dilution-ss}
\end{figure}

Gu等~\cite{Gujw08}采用几何建模中的结构光技术来对非均匀参与介质的体数据进行采集和建模。综合了压缩传感技术（Compressive Sensing）和结构光技术（Structure Light），提出了一种压缩的结构光技术，使用投影仪将预先编码好的二维图案照射到被采集的参与介质上，并使用相机来同步的拍摄每一编码的结构光照射下的参与介质的图像，如图\ref{fig:gu-device}。这里将二维图案和时间作为一个三维信息，进行压缩编码，并以$\mathbf{L(x,y,t)}$表示。不同的结构光对应不同的图像，一共24种不同的结构光。将结构光照射到参与介质上，并使用高速相机拍摄。根据简化的成像模型，这个相机/投影仪设备下的单散射体数据密度值$\mathbf{\rho}$与成像的像素值$\mathbf{I}$之间的关系可以表示为一个欠定线性方程组。利用信号处理领域对稀疏采样数据求解的压缩传感理论（compressive sensing theory）通过优化成像结果与重构的体数据密度值的绘制结果之间的误差值，求解每一时刻下整个参与介质密度场的值。

\begin{figure}[]
  \centering
  \includegraphics[width=0.618\textwidth]{gu-device}
  \caption{Gu等采用的相机/投影仪采集设备}
  \label{fig:gu-device}
\end{figure}

胡勇等~\cite{Hu10}提出了一种基于图像的方法来对非均匀单散射参与介质进行建模。这一方法使用了一套多相机系统，同步的采集不同视点下参与介质（这里采用的是点燃的香烟所产生的烟）体数据的成像结果，并以参与介质的密度场体数据和吸收、散射系数作为求解参数，以拍摄到的真实图像数据与根据待求解参数绘制得到的图像之间的差别作为优化的目标函数来进行数值优化，解决一个大量未知数的非线性优化问题。这一技术在原理上是一个逆向绘制（Inverse Rendering）过程~\cite{Marschner1998}。由于其采用的是基于图像的方式，这一技术能够很好的恢复烟等参与介质的细节特征，但是其计算量很大，运行时间往往很长。如在其论文中~\cite{Hu10}的时间分析部分介绍了恢复一帧体数据所需的时间为十到二十小时。因此这一方法仅被应用到了单帧的体数据重构上，而不能很好的应用到连续多帧的动态参与介质的建模上。本文的动态参与介质建模技术即以该方法的基本原理为核心思想，采用GPU加速实现并行梯度计算等技术来实现动态的参与介质建模。

\section{论文工作与组织}

\subsection{论文研究内容}

通过对国内外对参与介质特别是其动态属性进行建模的研究工作进行分析，我们归纳出当前参与介质数据采集设备与建模方法存在着这样一些问题：

\begin{enumerate}[（1）~]

\item
参与介质的模型过于简化。例如Hasinoff~\cite{Hasinoff2002}建三维火焰的模型只考虑介质的自发光，而忽略了介质对外来光源或本身发光的吸收、散射作用；Narasimhan~\cite{Narasimhan06}的建模工作仅仅恢复参与介质的吸收与散射属性，即建模的对象是均匀、静态的介质，而不对动态特征、空间上的密度分布进行重构。而在虚拟环境中逼真的再现真实世界中的动态非均匀参与介质及其视觉特征，需要重构一个包含较多信息的模型，从而真实的描述参与介质丰富的动态特征。

\item
采集设备昂贵难以搭建。如Hawkins等~\cite{Hawkins05}使用了激光设备和高速相机，并采用非常复杂的同步机制。昂贵而复杂的设备一方面使得建模方法难以被其他科研人员重新实现，另一方面还制约了建模技术的应用场合，只有某些特定场合才有机会使用这一类设备。对于通过采集真实世界数据的方式进行建模的技术，方便的采集过程是建模技术是否得到应用的一个非常重要的因素。

\item
建模方法的算法计算复杂度较高，缺乏较好的优化。基于采集真实物体数据的建模方法一般是一个逆向绘制过程，需要以数值优化的方法来求解待优化参数。因此需要高效的完成数值优化的过程，一方面减少迭代的次数，一方面使每一次迭代的运行时间尽量短，从而使得建模算法的执行时间开销合理。

\end{enumerate}

结合以上问题，本论文针对动态非均匀参与介质的建模技术展开研究。本课题受到国家自然科学基金项目“真实物体表面属性建模与绘制技术研究（60773153）”的资助，主要研究基于图像的动态非均匀参与介质的建模技术。本文探索了从采集到建模过程中每一步的问题和解决方法，整个流程如图\ref{fig:whole-system}所示，主要包括以下几个内容：

\begin{figure}[]
  \centering
  \includegraphics[width=0.75\textwidth]{whole-system}
  \caption{本文的采集建模流程与系统}
  \label{fig:whole-system}
\end{figure}

\begin{enumerate}[（1）~]

\item
搭建一套动态参与介质数据采集设备，根据动态参与介质特有的光学特性和成像特点，设计数据采集策略。并编写一系列相应的软件工具，用于采集过程和数据与处理。

\item 
研究基于图像的动态非均匀参与介质建模方法。对采集到的每一时刻的图像数据，设计建模算法来重构这一时刻下的参与介质密度场。由连续的每一时刻的密度场重构结果得到动态的非均匀参与介质模型。并研究利用GPU通用计算来实现算法，提高问题求解的效率。

\item
实现参与介质的绘制算法。根据光线在参与介质中的完整的传输过程~\cite{Nishita1987}，做适当的简化来推导出参与介质的成像模型，设计绘制算法。并利用OpenGl的API和shader来实现绘制算法，并且使绘制结果具有相当真实感。

\item
根据对建模算法的研究结果，实现动态非均匀参与介质建模工具。使用该工具可以方便的来配置建模的输入以及各项参数，并可以直观的显示建模结果。

\end{enumerate}

\subsection{论文组织结构}

围绕以上几点研究内容，本文的组织如下：

第一章，绪论。以真实感建模在图形学和虚拟现实中的重要意义为切入点，介绍了对于参与介质建模工作的国内外研究现状，并叙述了对参与介质进行基于图像的逼真建模的研究意义，并列出了本文的组织结构。第二章介绍了本文所设计和搭建的参与介质数据采集系统BH\_SmokeDome，分别介绍了这一系统的采集设备和采集流程。第三章介绍了本文实现的参与介质绘制方法，从光在参与介质中传播的完整描述的方程入手，结合本文搭建的采集设备中光照的特点，对参与介质的成像做了适当简化。在Ray marching 绘制技术的基础上，实现了简化成像模型后的参与介质绘制算法。第四章，详细介绍了本文提出的基于图像的动态非均匀参与介质的建模方法，给出了算法的理论依据和实现策略。并采用GPU通用计算来加速，给出了GPU加速的CUDA实现的细节。在第五章中，介绍了利用本文提出的建模技术来实现的动态参与介质建模工具。最后，在本文的结论一章，我们对本文的研究内容进行了总结，并指出了今后的研究方向和需要进一步完成的工作。

